import { Entity, Column, PrimaryColumn, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, BeforeInsert } from 'typeorm';
import { v4 as uuidv4 } from 'uuid';


@Entity()
export class EventLog {
    @PrimaryColumn('uuid') // 主键，使用 UUID
    id: string;
    
    @Column({ type: 'varchar', length: 255, nullable: false }) // varchar 类型，最大长度 255，不允许为空
    method: string;

    @Column({ type: 'varchar', length: 255, nullable: false }) // varchar 类型，最大长度 255，不允许为空
    url: string;

    @Column({ type: 'text', nullable: true }) // text 类型，允许为空
    event: string;

    @Column({ type: 'varchar', length: 255, nullable: false }) // varchar 类型，最大长度 255，不允许为空
    operatorId: string;

    @Column({ type: 'varchar', length: 255, nullable: true }) // varchar 类型，最大长度 255，不允许为空
    sufferOperatorId: string;

    @Column({ type: 'text', nullable: false }) // text 类型，允许为空
    description: string;

    @Column({ type: 'varchar', length: 255, nullable: false }) // varchar 类型，最大长度 255，不允许为空
    type: string;

    @CreateDateColumn({
        type: 'timestamp',
        default: () => 'CURRENT_TIMESTAMP(6)', // 使用微秒精度
        precision: 6
    })
    createdAt: Date;

    @UpdateDateColumn({
        type: 'timestamp',
        default: () => 'CURRENT_TIMESTAMP(6)', // 使用微秒精度
        onUpdate: 'CURRENT_TIMESTAMP(6)',
        precision: 6
    })
    updatedAt: Date;
    
    @DeleteDateColumn({
        type: 'timestamp',
        nullable: true,
        precision: 6
    })
    deletedAt: Date;;
    
      @BeforeInsert()
      generateUUID() {
        this.id = uuidv4(); // 生成 UUID
      }
}